Repository navigation
pg-parity-harness: shared PostgreSQL parity harness (D-QSP-H) - #2022
Conversation
Drives psql against a real server in a scratch schema, keeps NULL distinct from the empty string, reads result column types and SQLSTATE, and compares an implementation's answer as a multiset, as an ordered sequence that only allows reorders inside ties, by types, and by error code. Unsupported features are typed refusals; a mutation that does not change PostgreSQL's answer is reported as vacuous. Prints SKIP without a server. The r2il null-aggregate parity example now runs on it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPJjVvasjwqhjJ6c9p
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPJjVvasjwqhjJ6c9p
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9d97943629
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…unchanged under the query's ordering A reorder the query leaves unspecified no longer counts as a changed answer; the vacuous-mutation check uses the same comparison as parity. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPJjVvasjwqhjJ6c9p
…g-harness # Conflicts: # .github/workflows/rust-test.yml
D-QSP-H from
d-qsp-parity-roadmap-v1.md§3 is one harness that every parity slice reuses. Before this, each*_pg_parity.rsexample ranpsqlits own way.What it does
crates/pg-parity-harnessis a new workspace member with no dependencies; other crates use it as a dev-dependency.Pgpsqlagainst a real server inside a scratch schema, whichDropremoves.\gdescand reads SQLSTATE withVERBOSITY=sqlstate.connectreturnsSkipwhen no server answers.comparechecks, in order:ORDER BYkeys;An unsupported feature is a typed
Refusal, never a silent skip.Report/check_mutationrecord each case. A mutation that leaves PostgreSQL's answer unchanged is reported asVacuousMutation.Migration.
lance-graph-r2il/examples/null_aggs_pg_parity.rsnow runs on the harness. It prints SKIP without a server and panics on any failure after connecting.CI. A new line in
rust-test.ymlruns the harness's unit tests. The live test prints SKIP there, because CI has no PostgreSQL.Evidence (local PostgreSQL 16.15)
-D warningsand fmt are clean.tests/pg_live.rslive_server_roundtrippasses against the live server. The run prints9 cases, 5 pass, 3 fail, 1 unsupported; the fails and the refusal are the test's own negative cases, which it asserts on.bool_or,bool_andandcount(DISTINCT)equal PostgreSQL on value and NULL state for all of them. With validity disabled it differs on 224.Disable runs. For each, the anchor was asserted to occur exactly once and the file was restored afterwards.
VERBOSITY=sqlstate, and an emptyDrop.;strip inPg::query. On psql 16 a query ending in;followed by\gdescstill describes the right columns, so that trim is defensive and not load-bearing. It is kept, and no test claims it.Not verified
psqland move over one by one.Generated by Claude Code